package com.es.util;

import org.elasticsearch.common.geo.GeoDistance;
import org.elasticsearch.common.unit.DistanceUnit;

import java.util.List;

/**
 * @author 文雪峰
 * @date 2019/12/20 17:35
 * @description 简单描述
 **/
public class EsUtil {
    /**
     * 判断字符是否为null和""
     * @param str
     * @return 不是null和"" 返回true  否则返回false
     */
    public static boolean judgeString(String str) {
        boolean status = false;
        if (str != null && !"".equals(str)) {
            status = true;
        }
        return status;
    }

    /**
     * 判断集合是否是null和size大于0
     * 不是null和size大于0 返回true
     * 否则返回false
     * @param list 集合
     * @return 不是null和size大于0 返回true  否则返回false
     */
    public static boolean judgeList(List list){
        boolean flag = false;
        if(null != list && 0 < list.size()){
            flag = true;
        }
        return flag;
    }

    /**
     * 计算多少米
     *
     * @author: wxf
     * @date: 2020/4/22 10:11
     * @param dataLat 数据里面的维度
     * @param dataLon 数据里面的经度
     * @param lat 当前位置的维度
     * @param lon 当前位置的经度
     * @return: {@link double}
     **/
    public static double calculate(double dataLat, double dataLon,  double lat, double lon) {
        return GeoDistance.ARC.calculate(dataLat, dataLon, lat, lon, DistanceUnit.METERS);
    }

    /**
     * 转换为多少米
     *
     * @author: wxf
     * @date: 2020/7/23 11:37
     * @param paramLat 查询参数的维度
     * @param paramLon 查询参数的经度
     * @param location es查出来的数据 以 ，逗号分割的数组
     * @return: {@link String}
     **/
    public static String covertLocation(double paramLat, double paramLon, String[] location) {
        double dataLat = new Double(location[0]);
        double dataLon = new Double(location[1]);
        double calculate = calculate(dataLat, dataLon, paramLat, paramLon);
        return calculate < 1000 ? (int)calculate + "m" : Math.rint(calculate / 100) / 10 + "km";
    }
}
